package list;

import jdk.nashorn.api.scripting.ScriptObjectMirror;
import org.junit.Test;

import java.util.*;

public class ListAPI<list, com> {

    /**
     * get(int index) 返回值:E ---理解:Object
     * 作用:获取给定下标处的元素,从0开始
     */
    @Test
    public void testSet() {
        //
        List<String> list = new ArrayList<>();
        list.add("三生三世");
        list.add("你的名字");
        list.add("抓娃娃");
        //需求:List集合中元素"你的名字"修改为"749局"
        list.set(1,"749局");
        System.out.println("List集合:"+list);
        //获取到:List集合中元素叫:你的名字
        String str = list.get(1);
        System.out.println("获取集合中:"+str);
        //需求:获取List集合中所有的元素 ---普通for
        for(int i=0;i<list.size();i++){
            str= list.get(i);
            System.out.println("遍历List集合:"+str);
        }
    }
    /**
     * List继承Collection[重载:拓展功能]
     * add(int index,E e)
     * 作用:将给定元素插入指定位置
     * remove(int index) 返回值:E
     * 作用:将给定位置的元素从集合中删除
     */
    @Test
    public void testAR(){
        //创建List集合---重载方法add() 重载方法add(下标,"元素")
        List<String> list=new ArrayList<>();
        list.add("秦始皇"); list.add("汉武帝");
        list.add("王安石"); list.add("潘金莲");
        System.out.println("List集合元素"+list);

    }
    /**
     * List集合
     * subList(int start,int end) 返回值:<E>
     * 作用:截取范围内的字集 口诀:含头不含尾
     *
     */
    @Test
    public void testSubList(){
        //创建List集合<整数>
        List<Integer>list=new ArrayList<>();
        //创建伪随机数
        Random r=new Random();
        for(int i=0;i<10;i++){
            list.add(r.nextInt(100));//100以内
        }
        System.out.println("打印List:"+list);
        //对List元素进行排序
        Collections.sort(list);
        System.out.println("[有排序]打印List:"+list);
        //创建集合,10个元素 :0~9
        list = new ArrayList<>();
        for(int i=0;i<10;i++){
            list.add(i);
        }
        System.out.println("List集合:"+list);
        //获取子集:list集合元素中3~8之间的元素
        List<Integer>listch=list.subList(3,9);
        System.out.println("获取子集:"+listch);
        System.out.println("List集合:"+list);
        //获取子集:List集合元素中2~6之间的元素,子集元素扩大10倍
        //1.凑够List集合中,取2~6之间的元素
        List<Integer>lch=list.subList(3,9);
        //2.for循环遍历子集,遍历同时给每个下标的元素*10
        for (int i=0;i<lch.size();i++){//i 获取下标
            lch.set(i, lch.get(i)*10);

        }
        System.out.println("子集元素扩大10倍元素:"+lch);
        /**
         * 需求:
         */
        System.out.println("[List]"+list);
        lch.clear();
        System.out.println("清空");
        //提示:size() 获取子集长度 set(下标,获取子集元素*10)设置每个下标元素
        //get(下标)获取元素*10
    }

    /**
     * 需求:创建集合,存汉字,排序---能排[没规则]
     * sort(集合:Comparator
     */
    @Test
    public void testCompartor() {
        //创建集合--存:汉字
        List<String> list = new ArrayList<>();
        list.add("阿西吧");
        list.add("搜噶");
        list.add("呦西");
        //比较器规则定义:按照字符串长短进行排序
        //Comparator比较器接口--创建一次对象--采用匿名内部类
        Comparator<String> com = new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                /**
                 * 返回值 大于0  4-2 交换
                 * 返回值 小于0 3-4 不交换
                 * 返回值 等于0 2-2 不变
                 */

                return o1.length() - o2.length();
            }
        };
        //Compare方法:针对集合[自定义]排序
        //参数1:Object o1 集合中第一[交换]个元素
        //参数2:Object 02 集合中第二[交换]个元素
        Collections.sort(list, com);
        System.out.println("排序后集合:" + list);
    }
/**
 * 集合排序
 * Random 伪随机数类 包位置:java.util
 *
 * Collections 集合工具类 静态方法:sart
 * sart()方法:针对集合元素是数值进行排序[默认:升序]!返回值:List
 *
 * 需求:随机生成10个元素[整数:100以内]的集合---对集合排序
 *
 */

    }